/* 接口初探 */
// function printLabel(labelledObj: { label: string }) {
//     console.log(labelledObj.label);
// }
// let myObj = { size: 10, label: "Size 10 Object" };
// printLabel(myObj);
var DigitalClock = /** @class */ (function () {
    function DigitalClock(h, m) {
        this.h = h;
        this.m = m;
    }
    DigitalClock.prototype.tick = function () {
        var _this = this;
        setInterval(function () { return console.log("beep", _this.h, _this.m); }, 1000);
    };
    return DigitalClock;
}());
// let digital = new DigitalClock(12, 17);
// digital.tick();
function createClock(ctor, hour, minute) {
    return new ctor(hour, minute);
}
var digital = createClock(DigitalClock, 12, 17);
digital.tick();
/* 继承接口 */
// interface Shape {
//     color: string;
// }
// interface Square extends Shape {
//     // color: string;
//     sideLength: number;
// }
// let square = <Square>{};
// square.color = "blue";
// square.sideLength = 10;
// interface Shape {
//     color: string;
// }
// interface PenStroke {
//     penWidth: number;
// }
// interface Square extends Shape, PenStroke {
//     sideLength: number;
// }
// let square = <Square>{};
// square.color = "blue";
// square.sideLength = 10;
// square.penWidth = 5.0;
/* 混合类型（选学） */
// interface Counter {
//     (start: number): string;
//     interval: number;
//     reset(): void;
// }
// function getCounter(): Counter {
//     let counter = <Counter>function (start: number) { };
//     counter.interval = 123;
//     counter.reset = function () { };
//     return counter;
// }
// let c = getCounter();
// c(10);
// c.reset();
// c.interval = 5.0;
/* 接口继承类 */
// class Control {
//     state: any;
// }
// interface SelectableControl extends Control {
//     select(): void;
// }
// class Button extends Control implements SelectableControl {
//     select() {}
// }
